from enum import Enum
from typing import Any
from mcp.types import AnyUrl, PromptArgument

from pydantic import BaseModel


class MCPFunctionType(Enum):
    """
    资源类型类
    """
    TOOL = "tool"
    RESOURCE = "resource"
    RESOURCE_TEMPLATE = "resource_template"
    PROMPT = "prompt"


class MCPFunction(BaseModel):
    name: str # 函数名称(去除掉空格的)，不然会报错tools[17]
    origin_name: str # 原始名称,有点服务名字有空格需要保存到这里
    server_name: str # 函数属于哪个服务
    description: str # 函数的描述
    type_: MCPFunctionType # 函数类型
    # input_schema是Tool独有的属性
    input_schema: dict[str, Any] | None = None
    # uri是 RESOURCE/RESOURCE_TEMPLATE 独有的属性
    uri: str | AnyUrl | None = None
    # arguments 是 prompt 独有的属性
    arguments: list[PromptArgument] | None = None
